/**
* OkHttpUtils.java[v 1.0.0]
* class:com.example.exampleandroidproject.util,OkHttpUtils
* �ܺ� create at 2016-3-19 ����2:36:57
*/
package com.bdyjy.util;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.bdyjy.constants.HandlerOrder;
import com.squareup.okhttp.Call;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.MultipartBuilder;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;
/**
* com.example.exampleandroidproject.util.OkHttpUtils
*
* @author �ܺ�<br/>
* create at 2016-3-19 ����2:36:57
*/
public class OkHttpUtils
{
// ��������������
private static OkHttpUtils okHttpUtils = null;
private static OkHttpClient mOkHttpClient = new OkHttpClient();
private String url;
private String result;
final int MSG_WHAT = 1;
static
{
mOkHttpClient.setConnectTimeout(20, TimeUnit.SECONDS);
}
private OkHttpUtils()
{
}
public static OkHttpUtils getInstance()
{
if (null == okHttpUtils)
{
okHttpUtils = new OkHttpUtils();
}
return okHttpUtils;
}
public void uploadImg(Context ctx, String fileUri, final Handler handler)
throws IOException
{
Log.d("imgx", "�����ϴ�ͼƬ");
String ip = PropetiesFileReaderUtil.get(ctx, "ip");
String port = PropetiesFileReaderUtil.get(ctx, "port");
// ��sharePreference��ȡ��֮ǰ�洢�IJ���
String token = (String) SPUtils.get(ctx, "token", "");
String singnature = (String) SPUtils.get(ctx, "singnature", "");
String st = (String) SPUtils.get(ctx, "st", "");
String fullUrl = "http://" + ip + ":" + port
+ "/contentFileUp/fileUp.do?token=" + token + "&singnature="
+ singnature + "&st=" + st;
File file = new File(fileUri);
System.out.println("�ϴ�ͼƬ�Ĵ�С�ǣ�" + file.length() + " byte");
MediaType MEDIA_TYPE_IMAGE = MediaType
.parse("image/jpeg; charset=utf-8");
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("upFile", file.getName(),
RequestBody.create(MEDIA_TYPE_IMAGE, file)).build();
Request request = new Request.Builder().url(fullUrl).post(requestBody)
.build();
Call call = mOkHttpClient.newCall(request);
call.enqueue(new Callback()
{
@Override
public void onFailure(Request arg0, IOException arg1)
{
System.err.println("�ϴ�����onFailure");
handler.sendEmptyMessage(HandlerOrder.UPLOAD_ERROR);
}
@Override
public void onResponse(Response response) throws IOException
{
System.out.println(response.code());// ��ӡ��response�ַ���
String body = response.body().string().trim();
if (response.code() == 200)// ��������������������Ǿͽ������
{
Message s = new Message();
s.what = HandlerOrder.UPLOAD_OK;
Bundle bd = new Bundle();
bd.putString("body", body);
s.setData(bd);
handler.sendMessage(s);
}
}
});
}
/**
* �����漰�������ύ�ģ�ȫ��ʹ�ô˷������첽post
*
* @return
*/
public String doPostAsync(Context ctx, String url,
HashMap<String, String> map, final Handler handler)
{
String ip = PropetiesFileReaderUtil.get(ctx, "ip");
String port = PropetiesFileReaderUtil.get(ctx, "port");
String server_project_name = PropetiesFileReaderUtil.get(ctx,
"server_project_name");
// url = "http://" + ip + ":" + port + url;
if (!url.contains(server_project_name))// �����������̨��Ŀ��
{
url = "/" + server_project_name + url;
}
url = "http://" + ip + ":" + port + url;
System.out.println("xx:"+url);
FormEncodingBuilder feb = new FormEncodingBuilder();
for (String key : map.keySet())
{
feb.add(key, map.get(key));
// feb.addEncoded(key, map.get(key));
}
RequestBody formBody = feb.build();
Request request = new Request.Builder().url(url)
.header("User-Agent", "OkHttp Headers.java")
.addHeader("Accept", "application/json; q=0.5")
.addHeader("Accept", "application/vnd.github.v3+json")
.addHeader("Content-Type", "text/html; charset=UTF-8")// ��һ�к���û������
.post(formBody).build();
// enqueue
mOkHttpClient.newCall(request).enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
result = "error";
}
@Override
public void onResponse(Response response) throws IOException
{
// NOT UI Thread
if (response.isSuccessful())
{
System.out.println(response.code());// ��ӡ��response�ַ���
String body = response.body().string().trim();
if (response.code() == 200)// ��������������������Ǿͽ������
{
// System.out.println("responseCode:"+response.code());
result = body;
// System.out.println("body:"+body);
Message s = new Message();
s.what = HandlerOrder.POST_OK;
Bundle bd = new Bundle();
bd.putString("body", body);
s.setData(bd);
handler.sendMessage(s);
} else
{
// System.out.println("��������");
// System.out.println("responseCode:"+response.code());
// result = body;
// System.out.println("body:"+body);
Message s = new Message();
s.what = HandlerOrder.POST_ERROR;
handler.sendMessage(s);
}
}
}
});
return result;
}
/**
* ͬ��get
*
* @return
*
* @throws Exception
*/
public String doGet(Context ctx, String url) throws Exception
{
String ip = PropetiesFileReaderUtil.get(ctx, "ip");
String port = PropetiesFileReaderUtil.get(ctx, "port");
String server_project_name = PropetiesFileReaderUtil.get(ctx,
"server_project_name");
if (!url.contains(server_project_name))// �����������̨��Ŀ��
{
url = "/" + server_project_name + url;
}
String fullUrl = "http://" + ip + ":" + port + url;
System.out.println("get url:" + fullUrl);
Request request = new Request.Builder().url(fullUrl).build();
Response response = mOkHttpClient.newCall(request).execute();
if (response.isSuccessful())
{
String body = response.body().string();
result = body;
} else
{
result = "error";
}
return result;
}
/*
* get guocuicui
*/
public String Get(String url) throws IOException
{
System.out.println("get url:" + url);
Request request = new Request.Builder().url(url).build();
Response response = mOkHttpClient.newCall(request).execute();
if (response.isSuccessful())
{
String body = response.body().string();
result = body;
} else
{
result = "error";
}
return result;
}
// /**
// * �첽get
// *
// * @return
// */
// public String doGetAsync(String url)
// {
// // TODO Auto-generated method stub
// Request request = new Request.Builder().url(url).build();
// // enqueue
// mOkHttpClient.newCall(request).enqueue(new Callback()
// {
// @Override
// public void onFailure(Request request, IOException e)
// {
//
// }
//
// @Override
// public void onResponse(Response response) throws IOException
// {
// // NOT UI Thread
// if (response.isSuccessful())
// {
// System.out.println(response.code());
// // System.out.println(response.body().string());
// String body = response.body().string();
// System.out.println(body);
// result = body;
// }
// }
// });
//
// return result;
// }
private static final String CHARSET_NAME = HTTP.UTF_8;
/**
* ����ʹ����HttpClinet��API��ֻ��Ϊ�˷���
*
* @param params
* @return
*/
public static String formatParams(List<BasicNameValuePair> params)
{
return URLEncodedUtils.format(params, CHARSET_NAME);
}
/**
* ΪHttpGet �� url �������Ӷ��name value ������
*
* @param url
* @param params
* @return
*/
public static String attachHttpGetParams(String url,
List<BasicNameValuePair> params)
{
return url + "?" + formatParams(params);
}
public static final MediaType JSON = MediaType
.parse("application/json; charset=utf-8");
public String post(Context ctx, String url, String json) throws IOException
{
String ip = PropetiesFileReaderUtil.get(ctx, "ip");
String port = PropetiesFileReaderUtil.get(ctx, "port");
String server_project_name = PropetiesFileReaderUtil.get(ctx,
"server_project_name");
if (!url.contains(server_project_name))// �����������̨��Ŀ��
{
url = "/" + server_project_name + url;
}
String fullUrl = "http://" + ip + ":" + port + url;
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder().url(fullUrl).post(body).build();
Response response = mOkHttpClient.newCall(request).execute();
if (response.isSuccessful())
{
return response.body().string();
} else
{
throw new IOException("Unexpected code " + response);
}
}
// дһ���첽��ȡͼƬ�ķ���
}